package cn.group7.padserver.service;

import cn.group7.padserver.entity.Page;
import cn.group7.padserver.entity.RegisterUser;
import cn.group7.padserver.pojo.Knowledge;
import cn.group7.padserver.pojo.User;

import java.util.List;

/**
 * @author 谷汉斌
 * @description 用户业务类
 * @createTime 2024/7/22 下午8:36
 */
public interface UserService {
    /**
     * 根据用户名查询用户
     * @param userName 用户名
     * @return 用户
     */
    User selectByUserName(String userName);

    /**
     * 查询所有用户
     * @return 用户列表
     */
    List<User> selectAll();

    /**
     * 添加用户
     * @param user 用户
     * @return 是否添加成功
     */
    boolean add(User user);

    /**
     * 注册用户
     * @param registerUser 注册用户
     * @return 是否注册成功
     */
    boolean register(RegisterUser registerUser);

    /**
     * 更新用户
     * @param user 用户
     * @return 是否更新成功
     */
    boolean update(User user);

    /**
     * 删除用户
     * @param userName 用户名
     * @return 是否删除成功
     */
    boolean delete(String userName);

    /**
     * 用户登录时更新用户信息
     * @param user 用户
     * @return 是否更新成功
     */
    boolean loginUpdateByUsername(User user);

    /**
     * 分页查询用户
     * @param pageNum  页码
     * @param pageSize 每页显示的条数
     * @return 分页信息
     */
    Page<User> findPage(Integer pageNum, Integer pageSize);

    /**
     * 根据关键字分页查询用户
     * @param keys 关键字
     * @param pageNum  页码
     * @param pageSize 每页显示的条数
     * @return 分页信息
     */
    Page<Knowledge> findPageByKeys(String keys, Integer pageNum, Integer pageSize);
}
